package main

import (
	"log"
	"os"
	"os/exec"
	"syscall"
)
//UTS命名空间是Linux内核Namespace（命名空间）的一个子系统，主要用来完成对容器HOSTNAME和domain的隔离，
//同时保存内核名称、版本、以及底层体系结构类型等信息。
//UTS命名空间是扁平化的结构，不同的命名空间之间没有层级关系。
//Uts命名空间的用来隔离系统的这些信息，使得用户在容器中查看到的信息是当前容器的系统、版本，不同于主机的，
//内核通过uts_namespace对当前系统中多个容器的这些信息进行统一管理，每一个容器对应有一个自己的uts_namespace，
//用来隔离容器的内核名称、版本等信息，不同容器查看到的都是属于自己的信息，相互间不能查看
func main() {
	cmd := exec.Command("sh")
	cmd.SysProcAttr = &syscall.SysProcAttr{
		Cloneflags: syscall.CLONE_NEWUTS,
	}

	cmd.Stdin = os.Stdin
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr

	if err:= cmd.Run();err != nil{
		log.Fatal(err)
	}
}
